/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.eventos.beans;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.eventos.bc.TipoIngresosDelegate;
import org.cip.esymons.eventos.be.TipoIngresoEventos;

/**
 *
 * @author lizardo
 */
public class TipoIngresoController {
    TipoIngresosDelegate delegate;
    private TipoIngresoEventos ti;
    private List<TipoIngresoEventos> listaTipoIngreso;

    public TipoIngresoController() {
        delegate = new TipoIngresosDelegate();
        ti = new TipoIngresoEventos();
        listaTipoIngreso = new ArrayList<TipoIngresoEventos>();
        listar();
    }

    public String guardar() {
        try {
            delegate.guardar(getTi());
            cancelar();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo guardar el tipo de ingreso!", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return "OK";
    }

    public TipoIngresosDelegate getDelegate() {
        return delegate;
    }

    public String actualizar() {
        try {
            delegate.actualizar(getTi());
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo actualizar el tipo de ingreso!", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return "OK";
    }

    public String eliminar() {
        try {
            delegate.eliminar(ti);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo eliminar el tipo de ingreso!", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        listar();
        return "OK";
    }

    public String listar() {
        try {
            listaTipoIngreso = delegate.listar_Todos();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo listar los tipos de ingreso!", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return "listar";
    }

    public String cancelar() {
        ti = new TipoIngresoEventos();
        return "OK";
    }


    public String reset() {
        try {
            ti = delegate.buscarTipoIngreso(ti.getTpiCodigo());
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se pudo cancelar el tipo de ingreso!", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return "OK";
    }
    
    public TipoIngresoEventos getTi() {
        return ti;
    }
    public void setTi(TipoIngresoEventos ti) {
        this.ti = ti;
    }

    public List<TipoIngresoEventos> getListaTipoIngreso() {
        return listaTipoIngreso;
    }

    public void setListaTipoIngreso(List<TipoIngresoEventos> listaTipoIngreso) {
        this.listaTipoIngreso = listaTipoIngreso;
    }

    public String navegar_nuevo() {
        return "nuevo";
    }

    public String navegar_editar() {
        return "editar";
    }

    public SelectItem[] getComboTipoIngreso() {
       //Combo de Ambientes lista todos los Tipo de ingresos para eventos
        try {
            listaTipoIngreso = new ArrayList<TipoIngresoEventos>();
            listaTipoIngreso = delegate.listar_Todos();
            SelectItem[] comboTipoIngreso;
            if(listaTipoIngreso.size()>0){
               comboTipoIngreso  = new SelectItem[listaTipoIngreso.size()];
            for (int i = 0; i < listaTipoIngreso.size(); i++) {
                comboTipoIngreso[i] = new SelectItem(listaTipoIngreso.get(i), listaTipoIngreso.get(i).getTpiNombre());
            }
            }else{
                comboTipoIngreso=new SelectItem[1];
                comboTipoIngreso[0]=new SelectItem(new TipoIngresoEventos(), "No hay Tipo de Ingresos registrados");
            }

            return comboTipoIngreso;

        } catch (Exception e) {
            //Mensaje al usuario
            listaTipoIngreso = new ArrayList<TipoIngresoEventos>();
            SelectItem[] comboTipoIngreso = new SelectItem[1];
            comboTipoIngreso[0] = new SelectItem(new TipoIngresoEventos(), "No hay Tipo de Ingresos");
            return comboTipoIngreso;
        }
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

}
